home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 April / CMCD0404.ISO / Software / Shareware / Programare / sharp / wwwSharp_setup.exe / {app} / Examples / Html Editor / index.hta < prev    next >
Text File  |  2002-05-30  |  17KB  |  516 lines

  1. <HTML xmlns:mytb
  2.       xmlns:mymenu
  3.       xmlns:t ="urn:schemas-microsoft-com:time" >
  4. <head>
  5. <?IMPORT namespace="mytb" implementation="toolbar.htc">
  6. <?IMPORT namespace="mymenu" implementation="menu.htc">
  7. <?IMPORT namespace="t" implementation="#default#time2">
  8. <style>
  9.         .time             { behavior: url(#default#time2) }
  10. </style>
  11. <TITLE>HTML Editor</TITLE>
  12.  
  13. <HTA:APPLICATION ID="oHTA"
  14.      APPLICATIONNAME="HTML Editor"
  15.      BORDER="thick"
  16.      BORDERSTYLE="raised"
  17.      CAPTION="yes"
  18.      ICON="netpad.ico"
  19.      MAXIMIZEBUTTON="yes"
  20.      MINIMIZEBUTTON="yes"
  21.      SHOWINTASKBAR="yes"
  22.      SINGLEINSTANCE="yes"
  23.      SYSMENU="yes"
  24.      VERSION="1.0"
  25.      WINDOWSTATE="normal"/> 
  26.  
  27. <script>
  28. window.onload=doInit
  29. //sInitColor is a global variable. It holds the value of the selected color in the color dialog box when it displays
  30. var sInitColor = null;
  31. //sPersistValue holds the value of the saved innerHTML 
  32. var sPersistValue
  33. function doInit(){
  34.      for (i=0; i<document.all.length; i++)
  35.         //ensure that all document elements except the content editable DIV are unselectable
  36.         document.all(i).unselectable = "on";
  37.         oDiv.unselectable = "off";
  38.         //clear any text in the Document window and set the focus
  39.         oDiv.innerHTML="";
  40.         oDiv.focus();    
  41.         //call routines to populate the drop-down list boxes on the toolbar
  42.         getSystemFonts();
  43.          getBlockFormats();
  44.         window.resizeTo(730,560);
  45.         goContext(); 
  46. }
  47.  
  48. //This function works for all of the command identifiers used in this page
  49. function callFormatting(sFormatString){
  50.     document.execCommand(sFormatString);
  51. }
  52.  
  53. //Fonts routines
  54. //getSystemFonts uses the dialog helper object to return an array of all of the fonts on the user's system, then populates a drop-down listbox in the toolbar with the array elements
  55. function getSystemFonts(){
  56.     var a=dlgHelper.fonts.count;
  57.     var fArray = new Array();
  58.     var oDropDown = oToolBar.createDropDownListAt("4");
  59.     oDropDown.setAttribute("id","FontNameList");
  60.     for (i = 1;i < dlgHelper.fonts.count;i++){ 
  61.         fArray[i] = dlgHelper.fonts(i);
  62.         var aOptions = oDropDown.getOptions();    
  63.         var oOption = document.createElement("OPTION");
  64.         aOptions.add(oOption);    
  65.         oOption.text = fArray[i];
  66.         oOption.Value = i;
  67.     } 
  68.     //attaching the onchange event is necessary in order to detect when a user changes the value in the drop-down listbox
  69.         oDropDown.setAttribute("onchange",ChangeFont);
  70. }
  71.  
  72. //changeFontSize detects the value of the item in the drop-down listbox and applies the value to the font of the selected text
  73. function changeFontSize(){
  74.     var sSelected=oToolBar.getItem(6).getOptions().item(oToolBar.getItem(6).getAttribute("selectedIndex"));
  75.        document.execCommand("FontSize", false, sSelected.value);
  76. }
  77.  
  78. //changeFont detects the value of the item in the drop-down listbox and applies the value to the font of the selected text
  79. function ChangeFont(){    
  80.     var sSelected=oToolBar.getItem(4).getOptions().item(oToolBar.getItem(4).getAttribute("selectedIndex"));
  81.     document.execCommand("FontName", false, sSelected.text);
  82. }
  83.  
  84. //BlockFormats routines
  85. //getBlockFormats uses the dialog helper object to return an array of all of the block formats on the user's system, then populates a drop-down listbox in the toolbar with the array elements
  86. function getBlockFormats(){
  87.     var a=dlgHelper.blockFormats.count;
  88.     var fArray = new Array();
  89.     var oDropDown = oToolBar.createDropDownListAt("5");
  90.     oDropDown.setAttribute("id","FormatList");
  91.     for (i = 1;i < dlgHelper.blockFormats.count;i++)
  92.     { 
  93.         fArray[i] = dlgHelper.blockFormats(i);
  94.         var aOptions = oDropDown.getOptions();    
  95.         var oOption = document.createElement("OPTION");
  96.         aOptions.add(oOption);    
  97.         oOption.text = fArray[i];
  98.         oOption.Value = i;
  99.     } 
  100.     //attach the onchange event
  101.     oDropDown.setAttribute("onchange",ChangeFormat);
  102. }
  103.  
  104. //ChangeFormat detects the value of the item in the drop-down listbox and applies the value to the font of the selected text
  105. function ChangeFormat(){
  106.     var sSelected=oToolBar.getItem(5).getOptions().item(oToolBar.getItem(5).getAttribute("selectedIndex"));
  107.     document.execCommand("FormatBlock", false, sSelected.text);
  108.  
  109.  
  110. //callColorDlg uses the dialog helper object's ChooseColorDlg method to open the color dialog box, then changes the font or back color of the selected text
  111. function callColorDlg(sColorType){
  112.  
  113. if (sInitColor == null) 
  114.     //display color dialog box
  115.     var sColor = dlgHelper.ChooseColorDlg();
  116. else
  117.     var sColor = dlgHelper.ChooseColorDlg(sInitColor);
  118.     //change decimal to hex
  119.     sColor = sColor.toString(16);
  120.     //add extra zeroes if hex number is less than 6 digits
  121. if (sColor.length < 6) {
  122.       var sTempString = "000000".substring(0,6-sColor.length);
  123.       sColor = sTempString.concat(sColor);
  124. }
  125.     //change color of the selected text
  126.     document.execCommand(sColorType, false, sColor);
  127.     sInitColor = sColor;
  128.     oDiv.focus();
  129. }
  130.  
  131. //VerticalMode changes the orientation of the text from left to right to top to bottom
  132.  function VerticalMode(){
  133.      if (oDiv.style.writingMode == 'tb-rl')
  134.         oDiv.style.writingMode = 'lr-tb';
  135.       else
  136.         oDiv.style.writingMode = 'tb-rl';
  137. }
  138.  
  139. //SaveDocument uses the common dialog box object to display the save as dialog, then writes a textstream object from the value of the div's innerHTML property
  140. function SaveDocument(){
  141. //Setting CancelError to true and using try/catch allows the user to click cancel on the save as dialog without causing a script error
  142.       cDialog.CancelError=true;
  143.       try{
  144.           cDialog.Filter="HTM Files (*.htm)|*.htm|Text Files (*.txt)|*.txt"
  145.           cDialog.ShowSave();
  146.           var fso = new ActiveXObject("Scripting.FileSystemObject");
  147.           var f = fso.CreateTextFile(cDialog.filename,  true);
  148.           f.write(oDiv.innerHTML);
  149.           f.Close();
  150.           sPersistValue=oDiv.innerHTML;}
  151.       catch(e){
  152.           var sCancel="true";
  153.           return sCancel;}
  154.     oDiv.focus();    
  155.   }
  156.  
  157. //LoadDocument uses the common dialog box object to display the open dialog box, then reads the file and displays its contents in the div
  158. function LoadDocument(){
  159. //Setting CancelError to true and using try/catch allows the user to click cancel on the save as dialog without causing a script error
  160.        cDialog.CancelError=true;
  161.        try{
  162.            var answer = checkForSave();
  163.            //The user has clicked yes in the modal dialog box called in the checkForSave function
  164.            if (answer) {var sCancel = SaveDocument();
  165.                //The user has clicked cancel in the save as dialog box; exit function
  166.                if (sCancel) return; 
  167.                cDialog.Filter="HTM Files (*.htm)|*.htm|Text Files (*.txt)|*.txt"
  168.             cDialog.ShowOpen();
  169.                var ForReading = 1;
  170.                var fso = new ActiveXObject("Scripting.FileSystemObject");
  171.                var f = fso.OpenTextFile(cDialog.filename, ForReading);
  172.                var r = f.ReadAll();
  173.                f.close();
  174.                oDiv.innerHTML=r;
  175.                //This variable is used in the checkForSave function to see if there is new content in the div 
  176.                sPersistValue=oDiv.innerHTML;
  177.             
  178.            }
  179.            //The user has clicked no in the modal dialog box called in the checkForSave function
  180.           if (answer==false)
  181.                {cDialog.Filter="HTM Files (*.htm)|*.htm|Text Files (*.txt)|*.txt"
  182.               cDialog.ShowOpen();
  183.                var ForReading = 1;
  184.               var fso = new ActiveXObject("Scripting.FileSystemObject");
  185.                var f = fso.OpenTextFile(cDialog.filename, ForReading);
  186.               var r = f.ReadAll();
  187.               f.close();
  188.               oDiv.innerHTML=r;
  189.               sPersistValue=oDiv.innerHTML;
  190.             }
  191.           oDiv.focus();
  192.         }
  193.        catch(e){
  194.            var sCancel="true";
  195.            return sCancel;}
  196.  
  197. //NewDocument creates a new "document" by clearing the content of the div. If there is any new content in the div, the user is asked whether or not to save
  198. function NewDocument(){
  199.       var answer = checkForSave();
  200.        if (answer) {var sCancel = SaveDocument();
  201.          if (sCancel) return;
  202.         oDiv.innerHTML="";}
  203.     if (answer==false)
  204.         oDiv.innerHTML="";
  205.     oDiv.focus();
  206. }
  207.  
  208. //This function checks to see if the div has new text, then displays a modal dialog box if appropriate
  209. function checkForSave()
  210.     if ((oDiv.innerHTML!=sPersistValue)&&(oDiv.innerHTML !=""))
  211.          var checkSave=showModalDialog('dcheckForSave.htm','','dialogHeight:125px;dialogWidth:250px;scroll:off');
  212.     else
  213.           var checkSave=false;
  214.       return checkSave;
  215. }
  216.  
  217. //this function is used to call other functions when the user clicks on a menu item. These are the same functions that are called by the toolbar buttons.
  218. function CallMenuFunction(){
  219. var menuChoice = event.result;
  220. switch(menuChoice){
  221.          case "open":    
  222.             LoadDocument();
  223.             break;
  224.         case "new":
  225.             NewDocument();
  226.             break;
  227.         case "save":
  228.             SaveDocument();
  229.             break;
  230.         case "exit":
  231.              window.close();
  232.             break;
  233.         case "cut":
  234.             callFormatting('Cut');
  235.             break;
  236.         case "copy":
  237.             callFormatting('Copy');
  238.             break;
  239.         case "paste":
  240.             callFormatting('Paste');
  241.             break;
  242.         case "bold":
  243.             callFormatting('Bold');
  244.             break;
  245.         case "underline":
  246.             callFormatting('Underline');
  247.             break;
  248.         case "italic":
  249.             callFormatting('Italic');
  250.             break;
  251.         case "fontColor":
  252.             callColorDlg('ForeColor');
  253.             break;
  254.         case "highlight":
  255.             callColorDlg('BackColor');
  256.             break;
  257.          case "about":
  258.             goContext(); 
  259.             break;
  260.         default:
  261.             break;
  262.             }
  263. }
  264.  
  265. //These functions create and display the splash screen and are used when the application is launched (called by onInit function) as well as when the user clicks help/about on the menu
  266. var oPopup = window.createPopup()
  267. function goContext()
  268. {
  269.   var oPopupBody = oPopup.document.body;
  270.  
  271.   oPopupBody.innerHTML = oContext.innerHTML;
  272.   oPopup.show(175, 125, 400, 300, document.body);
  273.   document.body.onmousedown = oPopup.hide;
  274. }
  275.  
  276.  </script>
  277.  
  278.  
  279. </HEAD>
  280.  
  281. <BODY STYLE="overflow:hidden; margin:0px" >
  282. <!--Create the Dialog Helper Object-->
  283.  <OBJECT ID=dlgHelper CLASSID="clsid:3050f819-98b5-11cf-bb82-00aa00bdce0b" WIDTH="0px" HEIGHT="0px"></OBJECT>
  284.  
  285. <!-- Create the licensing object for the common dialog activex control -->
  286. <OBJECT CLASSID="clsid:5220cb21-c88d-11cf-b347-00aa00a28331">
  287.     <PARAM NAME="LPKPath" VALUE="comdlg.lpk">
  288. </OBJECT>
  289.  
  290. <!--Create the Common Dialog Box activex control-->
  291. <OBJECT ID="cDialog" WIDTH="0px" HEIGHT="0px"
  292.     CLASSID="CLSID:F9043C85-F6F2-101A-A3C9-08002B2F49FB"
  293.     CODEBASE="http://activex.microsoft.com/controls/vb5/comdlg32.cab">
  294. </OBJECT>
  295. <t:animate dur="5" onend="oPopup.hide();"/>
  296. <DIV ID="oContext" STYLE="display:none">
  297. <DIV STYLE="position:absolute; top:0; left:0; width:400px; height:300px; border:1px solid black; background:#eeeeee; "> 
  298. <DIV STYLE="padding:20px; background:white; border-bottom:5px solid #cccccc">
  299. <img src="htmledlogo.gif" align="absmiddle"></div>
  300. <DIV STYLE="padding:20px; font-size:8pt; line-height:1.5em; font-family:verdana; color:black;">This HTML Editor is created entirely with DHTML technologies and is provided as an example for developers using Internet Explorer 6.
  301. <br>
  302. <br>
  303. <br>
  304. <br><center>
  305. ©2001 Microsoft Corporation. All rights reserved. </center>
  306. </DIV>
  307. </DIV>
  308. </DIV>
  309.  
  310.  
  311.  
  312.  
  313. <DIV  ID="oContainer" STYLE="background-color:threedface; border:1px solid #cccccc; position:relative; height:100%; top:0;">
  314.  
  315.  
  316. <mymenu:menu id="File" backcolor="threedface" onsubmenu_click="CallMenuFunction();">File
  317. <mymenu:menu id="new" backcolor="threedface">New</mymenu:menu>
  318. <mymenu:menu id="open" backcolor="threedface">Open</mymenu:menu>
  319. <mymenu:menu id="save" backcolor="threedface">Save</mymenu:menu>
  320. <mymenu:menu id="exit" backcolor="threedface">Exit</mymenu:menu>
  321. </mymenu:menu>
  322. <mymenu:menu id="Edit" backcolor="threedface" onsubmenu_click="CallMenuFunction();">Edit
  323. <mymenu:menu id="cut" backcolor="threedface">Cut Ctrl+X</mymenu:menu>
  324. <mymenu:menu id="copy" backcolor="threedface">Copy Ctrl+C</mymenu:menu>
  325. <mymenu:menu id="paste" backcolor="threedface">Paste Ctrl+V</mymenu:menu>
  326. </mymenu:menu>
  327. <mymenu:menu id="Format" backcolor="threedface" onsubmenu_click="CallMenuFunction();">Format
  328. <mymenu:menu id="bold" backcolor="threedface">Bold</mymenu:menu>
  329. <mymenu:menu id="italic" backcolor="threedface">Italic</mymenu:menu>
  330. <mymenu:menu id="underline" backcolor="threedface">Underline</mymenu:menu>
  331. <mymenu:menu id="fontColor" backcolor="threedface">Font Color</mymenu:menu>
  332. <mymenu:menu id="highlight" backcolor="threedface">HighLight</mymenu:menu>
  333. </mymenu:menu>
  334. <mymenu:menu id="Help" backcolor="threedface" onsubmenu_click="CallMenuFunction();">Help
  335. <mymenu:menu id="about" backcolor="threedface">About</mymenu:menu>
  336. </mymenu:menu>
  337.  <nobr>
  338.  
  339.  
  340. <mytb:TOOLBAR STYLE="display:inline; width:100%" ID="oToolBar" 
  341. >
  342. <!--New document button-->
  343. <mytb:TOOLBARBUTTON  IMAGEURL="UI_new.gif"
  344. title="New Document"
  345. onclick="NewDocument();"/>
  346.  
  347. <!--Open document button-->
  348. <mytb:TOOLBARBUTTON  IMAGEURL="UI_open.gif"
  349. title="Open Document"
  350. onclick="LoadDocument();" />
  351. <!--Save document button-->
  352.  
  353. <mytb:TOOLBARBUTTON  IMAGEURL="UI_save.gif"
  354. title="Save Document"
  355. onclick="SaveDocument();"/>
  356.  
  357. <mytb:TOOLBARSEPARATOR />
  358.  
  359.     
  360.  <!-- Font size list--> 
  361. <mytb:TOOLBARDROPDOWNLIST id="oFontSize" onchange="changeFontSize();">
  362.   <option value=1>1
  363.   <option value=2>2
  364.   <option value=3>3
  365.   <option value=4 selected>4
  366.   <option value=5 >5
  367.   <option value=6>6
  368.   <option value=7>7
  369.  
  370. </mytb:TOOLBARDROPDOWNLIST>
  371.  
  372. <mytb:TOOLBARSEPARATOR/>
  373.  
  374. <!--Bold button-->
  375. <mytb:TOOLBARBUTTON IMAGEURL="UI_bold.gif" 
  376. title="Bold"
  377. onclick="callFormatting('Bold');"/>
  378.  
  379. <!--Italic button--> 
  380. <mytb:TOOLBARBUTTON IMAGEURL="UI_italic.gif"
  381. title="Italic" 
  382. onclick="callFormatting('Italic');"/>
  383.  
  384. <!--Underline button-->  
  385. <mytb:TOOLBARBUTTON IMAGEURL="UI_underline.gif"
  386. title="Underline" 
  387. onclick="callFormatting('Underline');"/>
  388.  
  389. <!--Strikethrough button-->  
  390. <mytb:TOOLBARBUTTON IMAGEURL="UI_form-strike.gif" 
  391. title="StrikeThrough"
  392. onclick="callFormatting('StrikeThrough');"/>
  393.  
  394. <mytb:TOOLBARSEPARATOR/>
  395.  
  396. <!--Superscript button-->  
  397. <mytb:TOOLBARBUTTON IMAGEURL="UI_superscript.gif"
  398. title="SuperScript"
  399. onclick="callFormatting('SuperScript');"/>
  400.  
  401. <!--Subscript button -->  
  402. <mytb:TOOLBARBUTTON IMAGEURL="UI_subscript.gif" 
  403. title="SubScript"
  404. onclick="callFormatting('SubScript');"/>
  405.  
  406. </mytb:TOOLBAR>
  407.  
  408. </nobr>
  409. <nobr>
  410.  
  411. <mytb:TOOLBAR STYLE="display:inline; width:100%" ID="oToolBar2"
  412.  
  413. >
  414.  
  415. <!--Cut button--> 
  416. <mytb:TOOLBARBUTTON  IMAGEURL="UI_tool-cut.gif"
  417. title="Cut"
  418. onclick="callFormatting('Cut');"/>
  419.  
  420. <!--Copy button--> 
  421. <mytb:TOOLBARBUTTON  IMAGEURL="UI_form-copy.gif"
  422. title="Copy"
  423. onclick="callFormatting('Copy');"/>
  424.  
  425. <!--Paste button--> 
  426. <mytb:TOOLBARBUTTON  IMAGEURL="UI_paste.gif"
  427. title="Paste"
  428. onclick="callFormatting('Paste');"/>
  429.  
  430. <mytb:TOOLBARSEPARATOR/>
  431.  
  432. <!--Undo button--> 
  433. <mytb:TOOLBARBUTTON  IMAGEURL="UI_undo.gif"
  434. title="Undo"
  435. onclick="callFormatting('Undo');"/>
  436.  
  437. <!--Redo button--> 
  438. <mytb:TOOLBARBUTTON  IMAGEURL="UI_redo.gif"
  439. title="Redo"
  440. onclick="callFormatting('Redo');"/>
  441.  
  442. <mytb:TOOLBARSEPARATOR/>
  443.  
  444. <!--Numbered list button--> 
  445. <mytb:TOOLBARBUTTON  IMAGEURL="UI_numberlist.gif"
  446. title="InsertOrderedList"
  447. onclick="callFormatting('InsertOrderedList');"/>
  448.  
  449. <!--Bulleted list button--> 
  450. <mytb:TOOLBARBUTTON  IMAGEURL="UI_bulletlist.gif"
  451. title="InsertUnorderedList"
  452. onclick="callFormatting('InsertUnorderedList');"/>
  453.  
  454. <!--Outdent button--> 
  455. <mytb:TOOLBARBUTTON  IMAGEURL="UI_outdent.gif"
  456. title="Outdent"
  457. onclick="callFormatting('Outdent');"/>
  458.  
  459. <!--Indent button-->
  460. <mytb:TOOLBARBUTTON  IMAGEURL="UI_indent.gif"
  461. title="Indent"
  462. onclick="callFormatting('Indent');"/>
  463.  
  464. <mytb:TOOLBARSEPARATOR/>
  465.  
  466. <!--Left alignment button-->
  467. <mytb:TOOLBARBUTTON  IMAGEURL="UI_leftalign.gif"
  468. title="JustifyLeft"
  469. onclick="callFormatting('JustifyLeft');"/>
  470.  
  471. <!--Center alignment button-->
  472. <mytb:TOOLBARBUTTON  IMAGEURL="UI_centeralign.gif"
  473. title="JustifyCenter"
  474. onclick="callFormatting('JustifyCenter');"/>
  475.  
  476. <!--Right alignment button-->
  477. <mytb:TOOLBARBUTTON  IMAGEURL="UI_rightalign.gif"
  478. title="JustifyRight"
  479. onclick="callFormatting('JustifyRight');"/>
  480.  
  481. <mytb:TOOLBARSEPARATOR/>
  482.  
  483. <!--Vertical alignment button-->
  484. <mytb:TOOLBARBUTTON  IMAGEURL="UI_tool_vertical.gif"
  485. title="Vertical Alignment"
  486. onclick="VerticalMode();"/>
  487.  
  488. <mytb:TOOLBARSEPARATOR/>
  489.  
  490. <!--Font Color button--> 
  491. <mytb:TOOLBARBUTTON IMAGEURL="UI_fontcolor.gif"
  492. title="Font Color" 
  493. onclick="callColorDlg('ForeColor');"/>
  494.  
  495. <!--Background color button --> 
  496. <mytb:TOOLBARBUTTON  IMAGEURL="UI_backcolor.gif"
  497. title="HighLight"
  498. onclick="callColorDlg('BackColor');"/>
  499.  
  500. </mytb:TOOLBAR> 
  501. </nobr>
  502.  
  503. <!--The content editable div-->
  504. <DIV 
  505. ID=oDiv 
  506. CONTENTEDITABLE 
  507. STYLE="height:80%;background-color:white; overflow:auto; width:100%;"> 
  508. </DIV>
  509.  
  510. </DIV>
  511.  
  512. </BODY>
  513. </HTML>